home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <iostream.h>
- #include <stdarg.h>
-
-
-
- class matrix {
- int **matrix_data;
- size_t matrix_size;
-
- public:
- matrix (size_t vector_length, ...);
- ~matrix (void);
- size_t get_matrix_size (void);
- void print_matrix (void);
- int elem (size_t i, size_t j);
- void put_value (size_t i, size_t j, int value);
-
-
- friend matrix operator+( matrix&, matrix&);
- void operator= (matrix &);
- };
-
-
- matrix::matrix (size_t matrix_length, ...)
- {
- va_list argptr;
- int value;
- int row, column;
-
- va_start (argptr, dummy_arg);
-
- // allocate space for the new matrix
-
- matrix_size = matrix_length;
- matrix_data = (int **) calloc (matrix_size, sizeof (int));
-
- for (row = 0; row < matrix_size; row++)
- matrix_data [row] = (int *) calloc (matrix_size, sizeof (int));
-
-
- row = column = 0;
- while ((value = va_arg (argptr, int)) && ( row < matrix_size)) {
- put_value (row, column, value);
-
- if (++column == matrix_size) {
- column = 0;
- row++;
- }
- }
-
- // initialize the rest of the array
-
- va_end (argptr);
-
- cout << "\nSuccessfully created object Matrix.\n";
- }
-
-
- matrix::~matrix (void)
- {
- free (matrix_data);
- matrix_size = 0;
- cout << "\nObject Matrix destroyed.\n";
- }
-
- size_t matrix::get_matrix_size (void)
- {
- return matrix_size;
- }
-
- void matrix::print_matrix (void)
- {
- size_t i, j;
-
- cout << '\n';
-
- for (i = 0; i < matrix_size; i++) {
- for (j = 0; j < matrix_size; j++)
- cout << elem (i,j) << ' ';
-
- cout << '\n';
- }
-
- cout << '\n';
- }
-
- int matrix::elem (size_t i, size_t j)
- {
- return *(*(matrix_data+i)+j);
- }
-
- void matrix::put_value (size_t i, size_t j, int value)
- {
- *(*(matrix_data+i)+j) = value;
- }
-
- matrix operator+ (matrix &m1, matrix &m2)
- {
- matrix temp (m1.matrix_size,1,0);
- size_t i, j;
-
- for (i = 0; i < temp.matrix_size; i++)
- for (j = 0; j < temp.matrix_size; j++)
- temp.put_value (i, j, m1.elem (i,j) + m2.elem (i,j));
-
- return temp;
- }
-
- void matrix::operator= (matrix &m)
- {
- size_t i,j;
- int value;
- int row, column;
-
- matrix_size = m.matrix_size;
-
- for (i = 0; i < matrix_size; i++)
- for (j = 0; j < matrix_size; j++)
- put_value (i,j, m.elem (i,j));
- }
-
-
- int main (void)
- {
- matrix my_matrix (3,1,2,3,
- 4,5,6,
- 7,8,9);
-
- matrix your_matrix (3,1,1,1,
- 1,1,1,
- 1,1,1);
-
- matrix our_matrix (3,1,0);
-
- cout << "\nHello world\n\n";
-
- my_matrix.print_matrix ();
- your_matrix.print_matrix ();
-
- cout << "\n--------------------------------------\n";
-
- (my_matrix+your_matrix).print_matrix ();
- our_matrix.print_matrix ();
- my_matrix.print_matrix ();
- your_matrix.print_matrix ();
- getch ();
-
- return 0;
- }
-
-
-